//
// 报红时，Make Project一下
// ----------------------
//
// 统一说明及管理
//
//

#ifndef KALDIANDROID_KALDI_H
#define KALDIANDROID_KALDI_H

// kaldi基础类
// #include "base/io-funcs-inl.h"
// #include "base/io-funcs.h"
// #include "base/kaldi-common.h"
// #include "base/kaldi-error.h"
 #include "base/kaldi-math.h" // ------------------------------------- 本例使用的h
// #include "base/kaldi-types.h"
// #include "base/kaldi-utils.h"
// #include "base/timer.h"
// #include "base/version.h"

// Chain模型基础类
// #include "chain/chain-datastruct.h"
// #include "chain/chain-den-graph.h"
// #include "chain/chain-denominator.h"
// #include "chain/chain-generic-numerator.h"
// #include "chain/chain-kernels-ansi.h"
// #include "chain/chain-numerator.h"
// #include "chain/chain-supervision.h"
// #include "chain/chain-training.h"
// #include "chain/language-model.h"

// cuda开头的是英伟达显卡相关api。目前手机都无法使用
// #include "cudadecoder/batched-static-nnet3-kernels.h"
// #include "cudadecoder/batched-static-nnet3.h"
// #include "cudadecoder/batched-threaded-nnet3-cuda-online-pipeline.h"
// #include "cudadecoder/batched-threaded-nnet3-cuda-pipeline.h"
// #include "cudadecoder/batched-threaded-nnet3-cuda-pipeline2.h"
// #include "cudadecoder/cuda-decodable-itf.h"
// #include "cudadecoder/cuda-decoder-common.h"
// #include "cudadecoder/cuda-decoder-kernels-utils.h"
// #include "cudadecoder/cuda-decoder-kernels.h"
// #include "cudadecoder/cuda-decoder.h"
// #include "cudadecoder/cuda-fst.h"
// #include "cudadecoder/cuda-online-pipeline-dynamic-batcher.h"
// #include "cudadecoder/cuda-pipeline-common.h"
// #include "cudadecoder/decodable-cumatrix.h"
// #include "cudadecoder/lattice-postprocessor.h"
// #include "cudadecoder/thread-pool-light.h"
// #include "cudadecoder/thread-pool.h"
// --
// #include "cudafeat/feature-online-batched-cmvn-cuda-kernels.h"
// #include "cudafeat/feature-online-batched-cmvn-cuda.h"
// #include "cudafeat/feature-online-batched-ivector-cuda-kernels.h"
// #include "cudafeat/feature-online-batched-ivector-cuda.h"
// #include "cudafeat/feature-online-batched-spectral-cuda-kernels.h"
// #include "cudafeat/feature-online-batched-spectral-cuda.h"
// #include "cudafeat/feature-online-cmvn-cuda.h"
// #include "cudafeat/feature-spectral-cuda.h"
// #include "cudafeat/feature-window-cuda.h"
// #include "cudafeat/lane-desc.h"
// #include "cudafeat/online-batched-feature-pipeline-cuda.h"
// #include "cudafeat/online-cuda-feature-pipeline.h"
// #include "cudafeat/online-ivector-feature-cuda-kernels.h"
// #include "cudafeat/online-ivector-feature-cuda.h"
// --
// #include "cudamatrix/cu-allocator.h"
// #include "cudamatrix/cu-array-inl.h"
// #include "cudamatrix/cu-array.h"
// #include "cudamatrix/cu-block-matrix.h"
// #include "cudamatrix/cu-common.h"
// #include "cudamatrix/cu-compressed-matrix.h"
// #include "cudamatrix/cu-device.h"
// #include "cudamatrix/cu-kernels-ansi.h"
// #include "cudamatrix/cu-kernels.h"
// #include "cudamatrix/cu-math.h"
// #include "cudamatrix/cu-matrix-inl.h"
// #include "cudamatrix/cu-matrix-lib.h"
// #include "cudamatrix/cu-matrix.h"
// #include "cudamatrix/cu-matrixdim.h"
// #include "cudamatrix/cu-packed-matrix.h"
// #include "cudamatrix/cu-rand.h"
// #include "cudamatrix/cu-sp-matrix.h"
// #include "cudamatrix/cu-sparse-matrix.h"
// #include "cudamatrix/cu-tp-matrix.h"
// #include "cudamatrix/cu-value.h"
// #include "cudamatrix/cu-vector.h"
// #include "cudamatrix/cublas-wrappers.h"

// 解码器相关
// #include "decoder/biglm-faster-decoder.h"
// #include "decoder/decodable-mapped.h"
// #include "decoder/decodable-matrix.h"
// #include "decoder/decodable-sum.h"
// #include "decoder/decoder-wrappers.h"
// #include "decoder/faster-decoder.h"
// #include "decoder/grammar-fst.h"
// #include "decoder/lattice-biglm-faster-decoder.h"
// #include "decoder/lattice-faster-decoder.h"
// #include "decoder/lattice-faster-online-decoder.h"
// #include "decoder/lattice-incremental-decoder.h"
// #include "decoder/lattice-incremental-online-decoder.h"
// #include "decoder/lattice-simple-decoder.h"
// #include "decoder/simple-decoder.h"
// #include "decoder/training-graph-compiler.h"

// 特征提取相关。手机不做相关工作，用不到
// #include "feat/feature-common-inl.h"
// #include "feat/feature-common.h"
// #include "feat/feature-fbank.h"
// #include "feat/feature-functions.h"
// #include "feat/feature-mfcc.h"
// #include "feat/feature-plp.h"
// #include "feat/feature-spectrogram.h"
// #include "feat/feature-window.h"
// #include "feat/mel-computations.h"
// #include "feat/online-feature.h"
// #include "feat/pitch-functions.h"
// #include "feat/resample.h"
// #include "feat/signal.h"
// #include "feat/wave-reader.h"

// OpenFST有限自动机 相关
// #include "fst/accumulator.h"
// #include "fst/add-on.h"
// #include "fst/arc-arena.h"
// #include "fst/arc-map.h"
// #include "fst/arc.h"
// #include "fst/arcfilter.h"
// #include "fst/arcsort.h"
// #include "fst/bi-table.h"
// #include "fst/cache.h"
// #include "fst/closure.h"
// #include "fst/compact-fst.h"
// #include "fst/compat.h"
// #include "fst/complement.h"
// #include "fst/compose-filter.h"
// #include "fst/compose.h"
// #include "fst/concat.h"
// #include "fst/config.h"
// #include "fst/connect.h"
// #include "fst/const-fst.h"
// #include "fst/determinize.h"
// #include "fst/dfs-visit.h"
// #include "fst/difference.h"
// #include "fst/disambiguate.h"
// #include "fst/edit-fst.h"
// #include "fst/encode.h"
// #include "fst/epsnormalize.h"
// #include "fst/equal.h"
// #include "fst/equivalent.h"
// #include "fst/expanded-fst.h"
// #include "fst/expectation-weight.h"
// #include "fst/factor-weight.h"
// #include "fst/filter-state.h"
// #include "fst/flags.h"
// #include "fst/float-weight.h"
// #include "fst/fst-decl.h"
// #include "fst/fst.h"
// #include "fst/fstlib.h"
// #include "fst/generic-register.h"
// #include "fst/heap.h"
// #include "fst/icu.h"
// #include "fst/intersect.h"
// #include "fst/interval-set.h"
// #include "fst/invert.h"
// #include "fst/isomorphic.h"
// #include "fst/label-reachable.h"
// #include "fst/lexicographic-weight.h"
// #include "fst/lock.h"
// #include "fst/log.h"
// #include "fst/lookahead-filter.h"
// #include "fst/lookahead-matcher.h"
// #include "fst/map.h"
// #include "fst/mapped-file.h"
// #include "fst/matcher-fst.h"
// #include "fst/matcher.h"
// #include "fst/memory.h"
// #include "fst/minimize.h"
// #include "fst/mutable-fst.h"
// #include "fst/pair-weight.h"
// #include "fst/partition.h"
// #include "fst/power-weight.h"
// #include "fst/product-weight.h"
// #include "fst/project.h"
// #include "fst/properties.h"
// #include "fst/prune.h"
// #include "fst/push.h"
// #include "fst/queue.h"
// #include "fst/randequivalent.h"
// #include "fst/randgen.h"
// #include "fst/rational.h"
// #include "fst/register.h"
// #include "fst/relabel.h"
// #include "fst/replace-util.h"
// #include "fst/replace.h"
// #include "fst/reverse.h"
// #include "fst/reweight.h"
// #include "fst/rmepsilon.h"
// #include "fst/rmfinalepsilon.h"
// #include "fst/set-weight.h"
// #include "fst/shortest-distance.h"
// #include "fst/shortest-path.h"
// #include "fst/signed-log-weight.h"
// #include "fst/sparse-power-weight.h"
// #include "fst/sparse-tuple-weight.h"
// #include "fst/state-map.h"
// #include "fst/state-reachable.h"
// #include "fst/state-table.h"
// #include "fst/statesort.h"
// #include "fst/string-weight.h"
// #include "fst/string.h"
// #include "fst/symbol-table-ops.h"
// #include "fst/symbol-table.h"
// #include "fst/synchronize.h"
// #include "fst/test-properties.h"
// #include "fst/topsort.h"
// #include "fst/tuple-weight.h"
// #include "fst/types.h"
// #include "fst/union-find.h"
// #include "fst/union-weight.h"
// #include "fst/union.h"
// #include "fst/util.h"
// #include "fst/vector-fst.h"
// #include "fst/verify.h"
// #include "fst/visit.h"
// #include "fst/weight.h"
// --openfst扩展
// #include "fstext/context-fst.h"
// #include "fstext/deterministic-fst-inl.h"
// #include "fstext/deterministic-fst.h"
// #include "fstext/determinize-lattice-inl.h"
// #include "fstext/determinize-lattice.h"
// #include "fstext/determinize-star-inl.h"
// #include "fstext/determinize-star.h"
// #include "fstext/epsilon-property-inl.h"
// #include "fstext/epsilon-property.h"
// #include "fstext/factor-inl.h"
// #include "fstext/factor.h"
// #include "fstext/fst-test-utils.h"
// #include "fstext/fstext-lib.h"
// #include "fstext/fstext-utils-inl.h"
// #include "fstext/fstext-utils.h"
// #include "fstext/grammar-context-fst.h"
// #include "fstext/kaldi-fst-io-inl.h"
// #include "fstext/kaldi-fst-io.h"
// #include "fstext/lattice-utils-inl.h"
// #include "fstext/lattice-utils.h"
// #include "fstext/lattice-weight.h"
// #include "fstext/pre-determinize-inl.h"
// #include "fstext/pre-determinize.h"
// #include "fstext/prune-special-inl.h"
// #include "fstext/prune-special.h"
// #include "fstext/push-special.h"
// #include "fstext/rand-fst.h"
// #include "fstext/remove-eps-local-inl.h"
// #include "fstext/remove-eps-local.h"
// #include "fstext/table-matcher.h"
// #include "fstext/trivial-factor-weight.h"

// GMM (对角阵高斯混合) 模型基础类
// #include "gmm/am-diag-gmm.h"
// #include "gmm/decodable-am-diag-gmm.h"
// #include "gmm/diag-gmm-inl.h"
// #include "gmm/diag-gmm-normal.h"
// #include "gmm/diag-gmm.h"
// #include "gmm/ebw-diag-gmm.h"
// #include "gmm/full-gmm-inl.h"
// #include "gmm/full-gmm-normal.h"
// #include "gmm/full-gmm.h"
// #include "gmm/indirect-diff-diag-gmm.h"
// #include "gmm/mle-am-diag-gmm.h"
// #include "gmm/mle-diag-gmm.h"
// #include "gmm/mle-full-gmm.h"
// #include "gmm/model-common.h"
// #include "gmm/model-test-common.h"

// GStreamer解码器插件
// #include "gst-plugin/gst-audio-source.h"
// #include "gst-plugin/gst-online-gmm-decode-faster.h"

// HMM模型相关
// #include "hmm/hmm-test-utils.h"
// #include "hmm/hmm-topology.h"
// #include "hmm/hmm-utils.h"
// #include "hmm/posterior.h"
// #include "hmm/transition-model.h"
// #include "hmm/tree-accu.h"

// 扩展接口
// #include "itf/clusterable-itf.h"
// #include "itf/context-dep-itf.h"
// #include "itf/decodable-itf.h"
// #include "itf/online-feature-itf.h"
// #include "itf/optimizable-itf.h"
// #include "itf/options-itf.h"
// #include "itf/transition-information.h"

// 声纹识别(说话人识别)
// #include "ivector/agglomerative-clustering.h"
// #include "ivector/ivector-extractor.h"
// #include "ivector/logistic-regression.h"
// #include "ivector/plda.h"
// #include "ivector/voice-activity-detection.h"

// Keyword Search关键词搜索
// #include "kws/kaldi-kws.h"
// #include "kws/kws-functions.h"
// #include "kws/kws-scoring.h"

// 构建词图
// #include "lat/arctic-weight.h"
// #include "lat/compose-lattice-pruned.h"
// #include "lat/confidence.h"
// #include "lat/determinize-lattice-pruned.h"
// #include "lat/kaldi-lattice.h"
// #include "lat/lattice-functions-transition-model.h"
// #include "lat/lattice-functions.h"
// #include "lat/minimize-lattice.h"
// #include "lat/phone-align-lattice.h"
// #include "lat/push-lattice.h"
// #include "lat/sausages.h"
// #include "lat/word-align-lattice-lexicon.h"
// #include "lat/word-align-lattice.h"

// 自带的language model语言模型
// #include "lm/arpa-file-parser.h"
// #include "lm/arpa-lm-compiler.h"
// #include "lm/const-arpa-lm.h"
// #include "lm/kaldi-rnnlm.h"
// #include "lm/kenlm.h"
// #include "lm/mikolov-rnnlm-lib.h"

// 矩阵计算
// #include "matrix/cblas-wrappers.h"
// #include "matrix/compressed-matrix.h"
// #include "matrix/jama-eig.h"
// #include "matrix/jama-svd.h"
// #include "matrix/kaldi-blas.h"
// #include "matrix/kaldi-matrix-inl.h"
// #include "matrix/kaldi-matrix.h"
// #include "matrix/kaldi-vector-inl.h"
// #include "matrix/kaldi-vector.h"
// #include "matrix/matrix-common.h"
// #include "matrix/matrix-functions-inl.h"
// #include "matrix/matrix-functions.h"
// #include "matrix/matrix-lib.h"
// #include "matrix/numpy-array.h"
// #include "matrix/optimization.h"
// #include "matrix/packed-matrix.h"
// #include "matrix/sp-matrix-inl.h"
// #include "matrix/sp-matrix.h"
// #include "matrix/sparse-matrix.h"
// #include "matrix/srfft.h"
// #include "matrix/tp-matrix.h"

// nnetX，训练方面的工作手机干不动。
// DNN训练声学模型实现方式1，仅支持单GPU，维护者Karel
// #include "nnet/nnet-activation.h"
// #include "nnet/nnet-affine-transform.h"
// #include "nnet/nnet-average-pooling-component.h"
// #include "nnet/nnet-blstm-projected.h"
// #include "nnet/nnet-component.h"
// #include "nnet/nnet-convolutional-component.h"
// #include "nnet/nnet-frame-pooling-component.h"
// #include "nnet/nnet-kl-hmm.h"
// #include "nnet/nnet-linear-transform.h"
// #include "nnet/nnet-loss.h"
// #include "nnet/nnet-lstm-projected.h"
// #include "nnet/nnet-matrix-buffer.h"
// #include "nnet/nnet-max-pooling-component.h"
// #include "nnet/nnet-multibasis-component.h"
// #include "nnet/nnet-nnet.h"
// #include "nnet/nnet-parallel-component.h"
// #include "nnet/nnet-parametric-relu.h"
// #include "nnet/nnet-pdf-prior.h"
// #include "nnet/nnet-randomizer.h"
// #include "nnet/nnet-rbm.h"
// #include "nnet/nnet-recurrent.h"
// #include "nnet/nnet-sentence-averaging-component.h"
// #include "nnet/nnet-trnopts.h"
// #include "nnet/nnet-utils.h"
// #include "nnet/nnet-various.h"

// DNN训练声学模型实现方式2，支持多GPU、CPU，维护者Daniel
// #include "nnet2/am-nnet.h"
// #include "nnet2/combine-nnet-a.h"
// #include "nnet2/combine-nnet-fast.h"
// #include "nnet2/combine-nnet.h"
// #include "nnet2/decodable-am-nnet.h"
// #include "nnet2/get-feature-transform.h"
// #include "nnet2/mixup-nnet.h"
// #include "nnet2/nnet-component.h"
// #include "nnet2/nnet-compute-discriminative-parallel.h"
// #include "nnet2/nnet-compute-discriminative.h"
// #include "nnet2/nnet-compute-online.h"
// #include "nnet2/nnet-compute.h"
// #include "nnet2/nnet-example-functions.h"
// #include "nnet2/nnet-example.h"
// #include "nnet2/nnet-fix.h"
// #include "nnet2/nnet-functions.h"
// #include "nnet2/nnet-limit-rank.h"
// #include "nnet2/nnet-nnet.h"
// #include "nnet2/nnet-precondition-online.h"
// #include "nnet2/nnet-precondition.h"
// #include "nnet2/nnet-stats.h"
// #include "nnet2/nnet-update-parallel.h"
// #include "nnet2/nnet-update.h"
// #include "nnet2/online-nnet2-decodable.h"
// #include "nnet2/rescale-nnet.h"
// #include "nnet2/shrink-nnet.h"
// #include "nnet2/train-nnet-ensemble.h"
// #include "nnet2/train-nnet.h"
// #include "nnet2/widen-nnet.h"

// DNN训练声学模型实现方式3，nnet2的改进，维护者Daniel
// #include "nnet3/am-nnet-simple.h"
// #include "nnet3/attention.h"
// #include "nnet3/convolution.h"
// #include "nnet3/decodable-batch-looped.h"
// #include "nnet3/decodable-online-looped.h"
// #include "nnet3/decodable-simple-looped.h"
// #include "nnet3/discriminative-supervision.h"
// #include "nnet3/discriminative-training.h"
// #include "nnet3/natural-gradient-online.h"
// #include "nnet3/nnet-am-decodable-simple.h"
// #include "nnet3/nnet-analyze.h"
// #include "nnet3/nnet-attention-component.h"
// #include "nnet3/nnet-batch-compute.h"
// #include "nnet3/nnet-chain-diagnostics.h"
// #include "nnet3/nnet-chain-diagnostics2.h"
// #include "nnet3/nnet-chain-example.h"
// #include "nnet3/nnet-chain-training.h"
// #include "nnet3/nnet-chain-training2.h"
// #include "nnet3/nnet-combined-component.h"
// #include "nnet3/nnet-common.h"
// #include "nnet3/nnet-compile-looped.h"
// #include "nnet3/nnet-compile-utils.h"
// #include "nnet3/nnet-compile.h"
// #include "nnet3/nnet-component-itf.h"
// #include "nnet3/nnet-computation-graph.h"
// #include "nnet3/nnet-computation.h"
// #include "nnet3/nnet-compute.h"
// #include "nnet3/nnet-convolutional-component.h"
// #include "nnet3/nnet-descriptor.h"
// #include "nnet3/nnet-diagnostics.h"
// #include "nnet3/nnet-discriminative-diagnostics.h"
// #include "nnet3/nnet-discriminative-example.h"
// #include "nnet3/nnet-discriminative-training.h"
// #include "nnet3/nnet-example-utils.h"
// #include "nnet3/nnet-example.h"
// #include "nnet3/nnet-general-component.h"
// #include "nnet3/nnet-graph.h"
// #include "nnet3/nnet-nnet.h"
// #include "nnet3/nnet-normalize-component.h"
// #include "nnet3/nnet-optimize-utils.h"
// #include "nnet3/nnet-optimize.h"
// #include "nnet3/nnet-parse.h"
// #include "nnet3/nnet-simple-component.h"
// #include "nnet3/nnet-test-utils.h"
// #include "nnet3/nnet-training.h"
// #include "nnet3/nnet-utils.h"

// online是用来识别的，手机上用到。
// 语音识别第1版api，停更了。
// #include "online/online-audio-source.h"
// #include "online/online-decodable.h"
// #include "online/online-faster-decoder.h"
// #include "online/online-feat-input.h"
// #include "online/online-tcp-source.h"
// #include "online/onlinebin-util.h"

// 语音识别第2版，较复杂
// #include "online2/online-endpoint.h"
// #include "online2/online-feature-pipeline.h"
// #include "online2/online-gmm-decodable.h"
// #include "online2/online-gmm-decoding.h"
// #include "online2/online-ivector-feature.h"
// #include "online2/online-nnet2-decoding-threaded.h"
// #include "online2/online-nnet2-decoding.h"
// #include "online2/online-nnet2-feature-pipeline.h"
// #include "online2/online-nnet3-decoding.h"
// #include "online2/online-nnet3-incremental-decoding.h"
// #include "online2/online-nnet3-wake-word-faster-decoder.h"
// #include "online2/online-speex-wrapper.h"
// #include "online2/online-timing.h"
// #include "online2/onlinebin-util.h"

// RNN语言模型训练。手机干不动
// #include "rnnlm/rnnlm-compute-state.h"
// #include "rnnlm/rnnlm-core-compute.h"
// #include "rnnlm/rnnlm-core-training.h"
// #include "rnnlm/rnnlm-embedding-training.h"
// #include "rnnlm/rnnlm-example-utils.h"
// #include "rnnlm/rnnlm-example.h"
// #include "rnnlm/rnnlm-lattice-rescoring.h"
// #include "rnnlm/rnnlm-test-utils.h"
// #include "rnnlm/rnnlm-training.h"
// #include "rnnlm/rnnlm-utils.h"
// #include "rnnlm/sampler.h"
// #include "rnnlm/sampling-lm-estimate.h"
// #include "rnnlm/sampling-lm.h"

// SGMM模型训练。手机干不动
// #include "sgmm2/am-sgmm2-project.h"
// #include "sgmm2/am-sgmm2.h"
// #include "sgmm2/decodable-am-sgmm2.h"
// #include "sgmm2/estimate-am-sgmm2-ebw.h"
// #include "sgmm2/estimate-am-sgmm2.h"
// #include "sgmm2/fmllr-sgmm2.h"

// 基于tensorflow RNN语言模型训练。手机干不动
// #include "tfrnnlm/tensorflow-rnnlm.h"

// 特征转换相关
// #include "transform/basis-fmllr-diag-gmm.h"
// #include "transform/cmvn.h"
// #include "transform/compressed-transform-stats.h"
// #include "transform/decodable-am-diag-gmm-regtree.h"
// #include "transform/fmllr-diag-gmm.h"
// #include "transform/fmllr-raw.h"
// #include "transform/fmpe.h"
// #include "transform/lda-estimate.h"
// #include "transform/lvtln.h"
// #include "transform/mllt.h"
// #include "transform/regression-tree.h"
// #include "transform/regtree-fmllr-diag-gmm.h"
// #include "transform/regtree-mllr-diag-gmm.h"
// #include "transform/transform-common.h"

// 内部决策树相关
// #include "tree/build-tree-questions.h"
// #include "tree/build-tree-utils.h"
// #include "tree/build-tree.h"
// #include "tree/cluster-utils.h"
// #include "tree/clusterable-classes.h"
// #include "tree/context-dep.h"
// #include "tree/event-map.h"
// #include "tree/tree-renderer.h"

// 基础工具类
// #include "util/basic-filebuf.h"
// #include "util/common-utils.h"
// #include "util/const-integer-set-inl.h"
// #include "util/const-integer-set.h"
// #include "util/edit-distance-inl.h"
// #include "util/edit-distance.h"
// #include "util/hash-list-inl.h"
// #include "util/hash-list.h"
// #include "util/kaldi-cygwin-io-inl.h"
// #include "util/kaldi-holder-inl.h"
// #include "util/kaldi-holder.h"
// #include "util/kaldi-io-inl.h"
// #include "util/kaldi-io.h"
// #include "util/kaldi-pipebuf.h"
// #include "util/kaldi-semaphore.h"
// #include "util/kaldi-table-inl.h"
// #include "util/kaldi-table.h"
// #include "util/kaldi-thread.h"
// #include "util/parse-options.h"
// #include "util/simple-io-funcs.h"
// #include "util/simple-options.h"
// #include "util/stl-utils.h"
// #include "util/table-types.h"
// #include "util/text-utils.h"

#endif //KALDIANDROID_KALDI_H